// 修复文件编码脚本
const fs = require('fs');
const path = require('path');

// 修复 .env 文件
const envContent = `# 默认环境配置
# 此文件包含所有环境的默认配置，会被 .env.dev 或 .env.prd 覆盖

NODE_ENV=dev
PORT=3000

# MySQL 数据库配置
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=
MYSQL_DATABASE=member_management
MYSQL_CONNECTION_LIMIT=10

# Redis 缓存配置
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0

# JWT 认证配置
JWT_SECRET=your-secret-key-change-in-production
JWT_EXPIRES_IN=7d

# Token 配置（单位：秒，7天 = 604800秒）
TOKEN_EXPIRES_IN=604800

# 速率限制配置
# RATE_LIMIT_MAX: 1分钟内最多请求次数
# RATE_LIMIT_WINDOW: 时间窗口（单位：毫秒，60000 = 1分钟）
RATE_LIMIT_MAX=10
RATE_LIMIT_WINDOW=60000

# 日志级别配置
# 可选值: debug, info, warn, error
LOG_LEVEL=info
`;

const envDevContent = `# 开发环境配置
NODE_ENV=dev
PORT=3000

# MySQL 数据库配置
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=
MYSQL_DATABASE=member_management_dev
MYSQL_CONNECTION_LIMIT=10

# Redis 缓存配置
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0

# JWT 认证配置
JWT_SECRET=dev-secret-key-change-me
JWT_EXPIRES_IN=7d

# Token 配置（单位：秒，7天 = 604800秒）
TOKEN_EXPIRES_IN=604800

# 速率限制配置
# RATE_LIMIT_MAX: 1分钟内最多请求次数
# RATE_LIMIT_WINDOW: 时间窗口（单位：毫秒，60000 = 1分钟）
RATE_LIMIT_MAX=10
RATE_LIMIT_WINDOW=60000

# 日志级别配置
# 开发环境使用 debug 级别，便于调试
LOG_LEVEL=debug
`;

const envPrdContent = `# 生产环境配置
# ⚠️ 警告：生产环境部署前请务必修改以下敏感配置项：
# - JWT_SECRET: 必须使用强密钥
# - MYSQL_PASSWORD: 数据库密码
# - REDIS_PASSWORD: Redis 密码（如果启用）

NODE_ENV=prd
PORT=3000

# MySQL 数据库配置
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=
MYSQL_DATABASE=member_management
MYSQL_CONNECTION_LIMIT=20

# Redis 缓存配置
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0

# JWT 认证配置
# ⚠️ 生产环境必须修改为强密钥，建议使用随机生成的32位以上字符串
JWT_SECRET=change-this-in-production-use-strong-secret-key
JWT_EXPIRES_IN=7d

# Token 配置（单位：秒，7天 = 604800秒）
TOKEN_EXPIRES_IN=604800

# 速率限制配置
# RATE_LIMIT_MAX: 1分钟内最多请求次数
# RATE_LIMIT_WINDOW: 时间窗口（单位：毫秒，60000 = 1分钟）
RATE_LIMIT_MAX=10
RATE_LIMIT_WINDOW=60000

# 日志级别配置
# 生产环境使用 info 级别，减少日志量
LOG_LEVEL=info
`;

// 写入 .env 文件
fs.writeFileSync('.env', envContent, 'utf8');
console.log('✅ 已创建 .env');

fs.writeFileSync('.env.dev', envDevContent, 'utf8');
console.log('✅ 已创建 .env.dev');

fs.writeFileSync('.env.prd', envPrdContent, 'utf8');
console.log('✅ 已创建 .env.prd');

// 修复 doc 目录下的文件名
const docDir = path.join(__dirname, '..', 'doc');
const files = fs.readdirSync(docDir).filter(f => f.endsWith('.md'));

files.forEach(file => {
  const filePath = path.join(docDir, file);
  const content = fs.readFileSync(filePath, 'utf8');
  
  let newName;
  if (content.includes('# API Documentation')) {
    newName = 'API文档.md';
  } else if (content.includes('# Architecture Documentation')) {
    newName = '架构文档.md';
  } else if (content.includes('# Deployment Documentation')) {
    newName = '部署文档.md';
  } else {
    return;
  }
  
  if (file !== newName) {
    const newPath = path.join(docDir, newName);
    // 如果新文件名已存在，先删除
    if (fs.existsSync(newPath)) {
      fs.unlinkSync(newPath);
    }
    fs.writeFileSync(newPath, content, 'utf8');
    fs.unlinkSync(filePath);
    console.log(`✅ 已重命名: ${file} -> ${newName}`);
  }
});

console.log('\n✅ 所有文件编码已修复！');

